package com.line.model.entity;

import org.springframework.format.annotation.DateTimeFormat;
import org.hibernate.annotations.DynamicInsert;
import javax.persistence.GeneratedValue;
import javax.persistence.Column;
import javax.persistence.GenerationType;
import java.util.Date;
import org.hibernate.annotations.DynamicUpdate;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;
import javax.persistence.Entity;
import com.alibaba.fastjson.JSONObject;
import javax.persistence.Id;

/**
 * <p>
 * 物流表
 * </p>
 * 
 * @version 1.0
 * @author Focus
 * @since 2019-01-27
 */
@Entity
@DynamicInsert
@DynamicUpdate
@Table(name = "express")
public class ExpressEntity implements java.io.Serializable {

	private static final long serialVersionUID = -1L;

	/**
	 * 主键ID，自增长
	 */
	@Id
	@GeneratedValue(strategy = GenerationType.IDENTITY)
	@Column(name = "id", nullable = false, unique = true, length = 20)
	private Long id;

	/**
	 * 创建时间，仅用于维护；
	 */
	@Temporal(TemporalType.TIMESTAMP)
	@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
	@Column(name = "gmt_create", nullable = false)
	private Date gmtCreate;

	/**
	 * 更新时间，仅用于维护；
	 */
	@Temporal(TemporalType.TIMESTAMP)
	@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
	@Column(name = "gmt_update", nullable = false)
	private Date gmtUpdate;

	/**
	 * 手机号
	 */
	@Column(name = "phone", nullable = false, length = 32)
	private String phone;

	/**
	 * 快递公司
	 */
	@Column(name = "express_name", nullable = false, length = 64)
	private String expressName;

	/**
	 * 快递单号
	 */
	@Column(name = "express_no", nullable = false, length = 32)
	private String expressNo;

	/**
	 * 发货时间，字符串格式
	 */
	@Column(name = "send_time_s", length = 32)
	private String sendTimeS;

	/**
	 * 发货时间，数值格式
	 */
	@Column(name = "send_time_l", length = 20)
	private Long sendTimeL;

	/**
	 * 发货信息
	 */
	@Column(name = "ship_info", length = 32)
	private String shipInfo;

	/**
	 * 属性的公用set方法<br/>
	 * 主键ID，自增长
	 */
	public void setId(Long value) {
		this.id = value;
    }

	/**
	 * 属性的公用get方法<br/>
	 * 主键ID，自增长
	 */
    public Long getId() {
		return this.id;
	}

	/**
	 * 属性的公用set方法<br/>
	 * 创建时间，仅用于维护；
	 */
	public void setGmtCreate(Date value) {
		this.gmtCreate = value;
    }

	/**
	 * 属性的公用get方法<br/>
	 * 创建时间，仅用于维护；
	 */
    public Date getGmtCreate() {
		return this.gmtCreate;
	}

	/**
	 * 属性的公用set方法<br/>
	 * 更新时间，仅用于维护；
	 */
	public void setGmtUpdate(Date value) {
		this.gmtUpdate = value;
    }

	/**
	 * 属性的公用get方法<br/>
	 * 更新时间，仅用于维护；
	 */
    public Date getGmtUpdate() {
		return this.gmtUpdate;
	}

	/**
	 * 属性的公用set方法<br/>
	 * 手机号
	 */
	public void setPhone(String value) {
		this.phone = value;
    }

	/**
	 * 属性的公用get方法<br/>
	 * 手机号
	 */
    public String getPhone() {
		return this.phone;
	}

	/**
	 * 属性的公用set方法<br/>
	 * 快递公司
	 */
	public void setExpressName(String value) {
		this.expressName = value;
    }

	/**
	 * 属性的公用get方法<br/>
	 * 快递公司
	 */
    public String getExpressName() {
		return this.expressName;
	}

	/**
	 * 属性的公用set方法<br/>
	 * 快递单号
	 */
	public void setExpressNo(String value) {
		this.expressNo = value;
    }

	/**
	 * 属性的公用get方法<br/>
	 * 快递单号
	 */
    public String getExpressNo() {
		return this.expressNo;
	}

	/**
	 * 属性的公用set方法<br/>
	 * 发货时间，字符串格式
	 */
	public void setSendTimeS(String value) {
		this.sendTimeS = value;
    }

	/**
	 * 属性的公用get方法<br/>
	 * 发货时间，字符串格式
	 */
    public String getSendTimeS() {
		return this.sendTimeS;
	}

	/**
	 * 属性的公用set方法<br/>
	 * 发货时间，数值格式
	 */
	public void setSendTimeL(Long value) {
		this.sendTimeL = value;
    }

	/**
	 * 属性的公用get方法<br/>
	 * 发货时间，数值格式
	 */
    public Long getSendTimeL() {
		return this.sendTimeL;
	}

	/**
	 * 属性的公用set方法<br/>
	 * 发货信息
	 */
	public void setShipInfo(String value) {
		this.shipInfo = value;
    }

	/**
	 * 属性的公用get方法<br/>
	 * 发货信息
	 */
    public String getShipInfo() {
		return this.shipInfo;
	}

	public String toString() {
		JSONObject object = new JSONObject();
		object.put("id", getId());
		object.put("gmtCreate", getGmtCreate());
		object.put("gmtUpdate", getGmtUpdate());
		object.put("phone", getPhone());
		object.put("expressName", getExpressName());
		object.put("expressNo", getExpressNo());
		object.put("sendTimeS", getSendTimeS());
		object.put("sendTimeL", getSendTimeL());
		object.put("shipInfo", getShipInfo());
		return object.toJSONString();
	}

}
